package com.zygk.qybapp.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import cn.jpush.android.api.JPushInterface;
import com.zygk.library.util.StringUtils;
import com.zygk.qybapp.activity.H5Activity;
import com.zygk.qybapp.config.Constants;
import java.util.Iterator;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * @author
 * @version 1.0
 * @date 2017/7/7
 */

public class JpushReceiver extends BroadcastReceiver {
  private static final String TAG = "JPush";

  @Override public void onReceive(Context context, Intent intent) {
    try {
      Bundle bundle = intent.getExtras();
      //Logger.d(TAG, "[HPushReceiver] onReceive - " + intent.getAction() + ", extras: " + printBundle(bundle));

      if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
        String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
        //Logger.d(TAG, "[HPushReceiver] 接收Registration Id : " + regId);
        //send the Registration Id to your server...

      } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
        //Logger.d(TAG, "[HPushReceiver] 接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE));

      } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
        //Logger.d(TAG, "[HPushReceiver] 接收到推送下来的通知");
        context.sendBroadcast(new Intent(Constants.BROADCAST_MESSAGE_REFRESH));
        //Logger.d(TAG, "[HPushReceiver] 接收到推送下来的通知的ID: " + notifactionId);

      } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
        // Logger.d(TAG, "[HPushReceiver] 用户点击打开了通知");

        //打开自定义的Activity
        context.sendBroadcast(new Intent(Constants.BROADCAST_MESSAGE_REFRESH));
        JSONObject obj = new JSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA));
        String url = obj.getString("qyb_url");
        Intent i = new Intent(context, H5Activity.class);
        if (!StringUtils.isBlank(url)) {
          i.putExtra(H5Activity.INTENT_URL, url);
        }
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
      } else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(intent.getAction())) {
        //Logger.d(TAG, "[HPushReceiver] 用户收到到RICH PUSH CALLBACK: " + bundle.getString(JPushInterface.EXTRA_EXTRA));
        //在这里根据 JPushInterface.EXTRA_EXTRA 的内容处理代码，比如打开新的Activity， 打开一个网页等..

      } else if (JPushInterface.ACTION_CONNECTION_CHANGE.equals(intent.getAction())) {
        boolean connected = intent.getBooleanExtra(JPushInterface.EXTRA_CONNECTION_CHANGE, false);
        //Logger.w(TAG, "[HPushReceiver]" + intent.getAction() +" connected state change to "+connected);
      } else {
        // Logger.d(TAG, "[HPushReceiver] Unhandled intent - " + intent.getAction());
      }
    } catch (Exception e) {

    }
  }

  // 打印所有的 intent extra 数据
  private static String printBundle(Bundle bundle) {
    StringBuilder sb = new StringBuilder();
    try {

      for (String key : bundle.keySet()) {
        if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
          sb.append("\nkey:" + key + ", value:" + bundle.getInt(key));
        } else if (key.equals(JPushInterface.EXTRA_CONNECTION_CHANGE)) {
          sb.append("\nkey:" + key + ", value:" + bundle.getBoolean(key));
        } else if (key.equals(JPushInterface.EXTRA_EXTRA)) {
          if (TextUtils.isEmpty(bundle.getString(JPushInterface.EXTRA_EXTRA))) {
            // Logger.i(TAG, "This message has no Extra data");
            continue;
          }

          JSONObject json = new JSONObject(bundle.getString(JPushInterface.EXTRA_EXTRA));
          Iterator<String> it = json.keys();

          while (it.hasNext()) {
            String myKey = it.next().toString();
            sb.append("\nkey:" + key + ", value: [" + myKey + " - " + json.optString(myKey) + "]");
          }
        } else {
          sb.append("\nkey:" + key + ", value:" + bundle.getString(key));
        }
      }
    } catch (JSONException e) {
      // Logger.e(TAG, "Get message extra JSON error!");
    }
    return sb.toString();
  }

  //send msg to RepairBeautyMainActivity
  private void processCustomMessage(Context context, Bundle bundle, JSONObject obj) {
    //Intent intent = new Intent(Constants.BROADCAST_NEW_MESSAGE);
    //context.sendBroadcast(intent);
    //String type;
    //try {
    //  type = obj.getString("messageType");
    //  if ("15".equals(type)) {
    //    intent = new Intent(Constants.BROADCAST_WASH_ENTRANCE);
    //    context.sendBroadcast(intent);
    //  }
    //} catch (JSONException e) {
    //  e.printStackTrace();
    //}
  }
}
